package test04.sync.test05.t1;

/**
 * 定义一个线程类，模拟电影院售票
 *
 * 用继承的方法实现
 * 因为创建多个线程的时候,属性也会被创建多份,所有需要把数据分离出来
 * 这里使用的方法是,将票变成静态属性,实现数据共享
 * 静态属性在内存中只有一份拷贝,被所有该类的实例共享
 *
 * @Author lzp
 * @Date 2024-03-21
 */
public class WindowThread extends Thread{
    /**
     * 电影票
     */
    private static int piao = 50;// 静态属性，表示电影票数量

    private String loke="lock";// 锁对象

    @Override
    public void run() {

        while (piao >= 1){
            synchronized (loke){
                if(piao>0){
                    // 输出卖票信息
                    System.out.println(Thread.currentThread().getName()+"出售了第"+piao+"张票");
                    piao--; // 卖出一张票
                }

                try {
                    Thread.sleep(500);// 模拟售票过程
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }

            }

        }
    }
}
